from django.urls import reverse
from django.http import QueryDict



def memory_url(request,name,*args,**kwargs):
    '''
    生成带有原搜索条件的URL（替代模板中的URL）
    :param requesst:
    :param name:
    :return:
    '''

    basic_url = reverse(name, args=args, kwargs=kwargs)
    if not request.GET:   # 判断当前url中是否有参数
    # 当前URL中无参数
        return  basic_url

    query_dict = QueryDict(mutable=True)
    old_parms = request.GET.urlencode()  # 可以获取get请求的字符串 mid=2&age=99
    query_dict['_filter'] = old_parms
    query_dict.urlencode()    #就等于  _filter =“mid=2&age=99”

    return "%s?%s"%(basic_url,query_dict.urlencode())




def memory_reverse(request,name,*args,**kwargs):
    '''
    反向生成URL
        http://localhost:8000/rbac/menu/add/?_filter=mid%3D2
        1. 在URL中获取原来的搜索条件。 如filter后的值
        2. reverse生成原来的URL，如： /menu/list/
        3. /menu/list/?mid%3D2

    :param request:
    :param name:
    :param args:
    :param kwargs:
    :return:
    '''
    url = reverse(name,args=args,kwargs=kwargs)
    orgin_parms = request.GET.get('_filter')
    if orgin_parms:
        url = "%s?%s" % (url, orgin_parms)
    return url


